package com.bjpowernode.util;

import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Supplier;


public class CacheUtils {

    public static <T> T getCacheData(Supplier<T> cacheSelector, Supplier<T> dbSelector, Consumer<T> cacheSave) {
        //1、先从缓存中查询，如果查到了就直接返回，此时就不需要查询数据库了，
        T t = cacheSelector.get();
        //2、如果缓存中没有查到，那就从数据库查询，然后把数据放入缓存中，
        if (Objects.isNull(t)) {
            t = dbSelector.get();

            if (!Objects.isNull(t)) {
                //3、把数据放入缓存中，那么下次查询的时候，又可以从缓存中查询，整个下来，可以减少对数据库的查询，降低数据库的压力
                cacheSave.accept(t);
            }
        }
        return t;
    }
}
